The disclosure is generally directed to placement of physical resources for a virtual machine and, more particularly, to techniques for utilizing a resource fold factor in placement of physical resources for a virtual machine.
Computing may be thought of in terms of an application and a supporting platform. A supporting platform typically includes a hardware infrastructure of one or more processor cores, input/output, memory, and fixed storage (the combination of which supports an operating system (OS), which in turn supports one or more applications). Applications may be thought of as self-contained bundles of logic that rely on core object files and related resource files. As computing has become integral to modern industry, applications have become co-dependent on the presence of other applications. That is, a requisite environment for an application may include not only an underlying OS and supporting hardware platform, but also other key applications.
Key applications may include application servers, database management servers, collaboration servers, and communicative logic commonly referred to as middleware. Given the complexity of application and platform interoperability, different combinations of applications executing in a single hardware platform can demonstrate differing degrees of performance and stability. Virtualization technology interjects a layer between a supporting platform and executing applications. From the perspective of business continuity and disaster recovery, virtualization provides the inherent advantage of environment portability. For example, moving an entire environment configured with multiple different applications may be as simple as moving a virtual image from one supporting hardware platform to another.
In general, more powerful computing environments can support the coexistence of multiple different virtual images while maintaining a virtual separation between the images. Consequently, a failure condition in one virtual image typically cannot jeopardize the integrity of other co-executing virtual images in the same hardware platform. A virtual machine monitor (VMM) or hypervisor manages the interaction between each virtual image and underlying resources provided by a hardware platform. A bare metal hypervisor runs directly on the hardware platform similar to how an OS runs directly on hardware. In contrast, a hosted hypervisor runs within a host OS. In either case, a hypervisor can support the operation of different guest OS images or virtual machine (VM) images. The number of VM images is limited only by the processing resources of a VM container that holds the VM images or the hardware platform.
Virtualization has proven especially useful for end-users that require separate computing environments for different types of applications that are deployed on a single hardware platform. For example, a primary OS native to one type of hardware platform may provide a virtualized guest OS that is native to a different hardware platform (so that applications requiring the presence of the guest OS can co-exist with other applications requiring the presence of the primary OS). In this case, an end-user is not required to provide separate computing environments to support different types of applications. That is, irrespective of the guest OS, access to underlying resources of the single hardware platform remains static.
Virtualized environments have been deployed to aggregate different interdependent applications in different VMs in composing application solutions. For example, an application server can execute within one VM while a database management server executes in a different VM and a web server executes in yet another VM. Each of the VMs can be communicatively coupled to one another in a secure network and any given deployment of the applications can be live migrated to a different deployment without interfering with the execution of the other applications in the other VMs. In a typical live migration, a VM can be moved from one host server to another host server in order to, for example, permit server maintenance or to permit an improvement in hardware support for the VM.
Entitled capacity (EC) defines the minimum physical processor resources a logical partition (LPAR) or virtual machine (VM) is entitled to utilize. EC and virtual processors (VPs) are frequently utilized in conjunction with virtual machines (VMs) that employ a shared processor pool. A VP may, for example, represent from one-tenth of a physical processor core to one physical processor core. For example, if one VP is defined for a VM, the VP can physically utilize up to one physical processor core. As another example, if three VPs are defined for a VM, the three VPs can physically utilize no more than three physical processor cores. In a virtualized data processing system that employs simultaneous multithreading (SMT) with a maximum of four SMT threads, one VP may appear as up to four logical processors in a VM depending on the SMT mode. As mentioned above, EC corresponds to the physical processor resources that are assigned to a VM. In various virtualized data processing systems, when a VM is uncapped, the VM can utilize excess cycles in a shared processor pool, which may allow the VM to exceed an assigned EC. It should be appreciated that capping an EC of a VM limits the amount of physical processor resources the VM can utilize.
Processor utilization by a VM may also be limited by restricting a number of VPs that may be assigned to the VM. For example, if a VM is assigned four VPs and 1.6 processing units, 0.4 processing units may be allocated to each VP. With a highly threaded workload, the assignment of four VPs and 1.6 processing units to a VM might be optimal. As another example, if two VPs and 0.6 processing units are assigned to a VM, each VP may be allocated 0.3 physical processor cores.